// 定义一个包名，通常与项目结构相关联
package com.example.demo02.common;
// 导入Spring框架中用于定义配置类和Bean的类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

// 使用@Configuration注解标记这个类作为一个配置类，这意味着Spring容器会为这个类创建一个Bean
@Configuration
// 定义一个继承自WebMvcConfigurationSupport的类，这个类用于配置Spring MVC的特定功能
public class InterceptorConfig extends WebMvcConfigurationSupport {

    // 重写WebMvcConfigurationSupport中的addInterceptors方法，用于注册拦截器
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        // 使用registry对象添加一个拦截器，这个拦截器是JwtInterceptor类型的Bean
        registry.addInterceptor(jwtInterceptor())
                // 指定拦截器应该拦截的路径模式，这里使用"/**"表示拦截所有请求
                .addPathPatterns("/**")
                // 指定拦截器应该排除的路径模式，这里排除了"/login"路径，即登录请求不会被拦截
                .excludePathPatterns("/login");
        // 调用父类的addInterceptors方法，以添加任何其他默认的拦截器
        super.addInterceptors(registry);
    }

    // 使用@Bean注解标记这个方法，表示这个方法会返回一个Bean，这个Bean会被Spring容器管理
    @Bean
    // 定义一个方法来创建JwtInterceptor类型的Bean
    public JwtInterceptor jwtInterceptor() {
        // 返回一个JwtInterceptor的新实例
        return new JwtInterceptor();
    }

}